var vm;

function rollInit(target, text = '这是一条会滚动的文字滚来滚去的文') {
  vm = target;
  vm.setData({
    text: text,
    marqueePace: 1,//滚动速度
    marqueeDistance: 0,//初始滚动距离
    marqueeDistance2: 0,
    marquee2copy_status: false,
    marquee2_margin: 60,
    size: 14,
    orientation: 'left',//滚动方向
    interval: 50, // 时间间隔
  });
  var length = vm.data.text.length * vm.data.size;//文字长度
  var windowWidth = wx.getSystemInfoSync().windowWidth;// 屏幕宽度
  vm.setData({
    length: length,
    windowWidth: windowWidth,
    marquee2_margin: length < windowWidth ? windowWidth - length : vm.data.marquee2_margin//当文字长度小于屏幕长度时，需要增加补白
  });
  // run1();// 水平一行字滚动完了再按照原来的方向滚动
  // vm.run2();// 第一个字消失后立即从右边出现
}

function run(mode = 1) {
  if (mode == 1) {
    run1();
  }
  else {
    run2();
  }
}

var run1_interval = 0;

function run1() {
  run1_interval = setInterval(function () {
    if (-vm.data.marqueeDistance < vm.data.length) {
      vm.setData({
        marqueeDistance: vm.data.marqueeDistance - vm.data.marqueePace,
      });
    } else {
      clearInterval(run1_interval);
      vm.setData({
        marqueeDistance: vm.data.windowWidth
      });
      run1();
    }
  }, vm.data.interval);
}

function stopRun1() {
  clearInterval(run1_interval);
}

function run2() {
  var interval = setInterval(function () {
    if (-vm.data.marqueeDistance2 < vm.data.length) {
      // 如果文字滚动到出现marquee2_margin=30px的白边，就接着显示
      vm.setData({
        marqueeDistance2: vm.data.marqueeDistance2 - vm.data.marqueePace,
        marquee2copy_status: vm.data.length + vm.data.marqueeDistance2 <= vm.data.windowWidth + vm.data.marquee2_margin,
      });
    } else {
      if (-vm.data.marqueeDistance2 >= vm.data.marquee2_margin) { // 当第二条文字滚动到最左边时
        vm.setData({
          marqueeDistance2: vm.data.marquee2_margin // 直接重新滚动
        });
        clearInterval(interval);
        vm.run2();
      } else {
        clearInterval(interval);
        vm.setData({
          marqueeDistance2: -vm.data.windowWidth
        });
        run2();
      }
    }
  }, vm.data.interval);
}

module.exports = {
  rollInit: rollInit,
  run1: run1,
  stopRun1: stopRun1
}